home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / pcpilot.exe / lha / UTY.ASM < prev    next >
Assembly Source File  |  1989-12-30  |  6KB  |  329 lines

  1. ; UTY.ASM - Converted from UTY.C using TCC.EXE
  2. ;
  3. ; From the book "Systems Programming in Turbo C", by Michael J. Young
  4. ;
  5.  
  6.     ifndef    ??version
  7. ?debug    macro
  8.     endm
  9.     endif
  10.     ?debug    S "uty.c"
  11. _TEXT    segment    byte public 'CODE'
  12. DGROUP    group    _DATA,_BSS
  13.     assume    cs:_TEXT,ds:DGROUP,ss:DGROUP
  14. _TEXT    ends
  15. _DATA    segment word public 'DATA'
  16. d@    label    byte
  17. d@w    label    word
  18. _DATA    ends
  19. _BSS    segment word public 'BSS'
  20. b@    label    byte
  21. b@w    label    word
  22.     ?debug    C E9BBB16912057574792E63
  23.     ?debug    C E9C884461212423A5C494E434C5544455C737464696F2E68
  24.     ?debug    C E900101D1113423A5C494E434C5544455C7374646172672E68
  25.     ?debug    C E900101D1110423A5C494E434C5544455C646F732E68
  26.     ?debug    C E99A7D521210423A5C494E434C5544455C7363722E68
  27. _BSS    ends
  28. _DATA    segment word public 'DATA'
  29.     dw    108
  30.     dw    64
  31.     dw    112
  32.     dw    64
  33. _DATA    ends
  34. _TEXT    segment    byte public 'CODE'
  35.     ?debug    C E800057574792E63BBB16912
  36.     ?debug    L 10
  37. _UtyClockCount    proc    near
  38.     ?debug    B
  39.     push    bp
  40.     mov    bp,sp
  41.     push    si
  42.     push    di
  43.     ?debug    C E318000200150604
  44.     ?debug    C E605436F756E74180A0400
  45.     ?debug    B
  46.     ?debug    L 17
  47.     call    near ptr _UtyEnabled
  48.     mov    si,ax
  49.     ?debug    L 19
  50.     cli    
  51.     ?debug    L 20
  52.     les    bx,dword ptr DGROUP:d@
  53.     mov    dx,word ptr es:[bx+2]
  54.     mov    ax,word ptr es:[bx]
  55.     mov    bx,word ptr [bp+4]
  56.     mov    word ptr [bx+2],dx
  57.     mov    word ptr [bx],ax
  58.     ?debug    L 21
  59.     les    bx,dword ptr DGROUP:d@+4
  60.     mov    al,byte ptr es:[bx]
  61.     mov    ah,0
  62.     mov    di,ax
  63.     ?debug    L 22
  64.     or    si,si
  65.     je    @2
  66.     ?debug    L 23
  67.     sti    
  68. @2:
  69.     ?debug    L 24
  70.     mov    ax,di
  71.     jmp    short @1
  72. @1:
  73.     ?debug    L 25
  74.     pop    di
  75.     pop    si
  76.     pop    bp
  77.     ret    
  78.     ?debug    C E319000400160800
  79.     ?debug    C E31A000400160600
  80.     ?debug    C E608526F6C6C6F76657204040707456E61626C65+
  81.     ?debug    C 6404040606526F6C50747219000002040006436E+
  82.     ?debug    C 745074721A000002000005436F756E74180A0400
  83.     ?debug    E
  84.     ?debug    E
  85. _UtyClockCount    endp
  86.     ?debug    L 28
  87. _UtyEnabled    proc    near
  88.     ?debug    B
  89.     ?debug    B
  90.     ?debug    L 30
  91.      pushf    
  92.     ?debug    L 31
  93.      pop     ax
  94.     ?debug    L 32
  95.      and     ax, 0200h
  96.     jmp    short @3
  97. @3:
  98.     ?debug    L 34
  99.     ret    
  100.     ?debug    E
  101.     ?debug    E
  102. _UtyEnabled    endp
  103.     ?debug    L 37
  104. _UtyTime    proc    near
  105.     ?debug    B
  106.     push    bp
  107.     mov    bp,sp
  108.     ?debug    C E31B000200150404
  109.     ?debug    C E60A48756E647265647468731B0A0A0007536563+
  110.     ?debug    C 6F6E64731B0A0800074D696E757465731B0A0600+
  111.     ?debug    C 05486F7572731B0A0400
  112.     ?debug    B
  113.     ?debug    L 39
  114.     mov    ah,44
  115.     ?debug    L 40
  116.     int    33
  117.     ?debug    L 41
  118.     mov    al,ch
  119.     mov    ah,0
  120.     mov    bx,word ptr [bp+4]
  121.     mov    word ptr [bx],ax
  122.     ?debug    L 42
  123.     mov    al,cl
  124.     mov    ah,0
  125.     mov    bx,word ptr [bp+6]
  126.     mov    word ptr [bx],ax
  127.     ?debug    L 43
  128.     mov    al,dh
  129.     mov    ah,0
  130.     mov    bx,word ptr [bp+8]
  131.     mov    word ptr [bx],ax
  132.     ?debug    L 44
  133.     mov    al,dl
  134.     mov    ah,0
  135.     mov    bx,word ptr [bp+10]
  136.     mov    word ptr [bx],ax
  137. @4:
  138.     ?debug    L 45
  139.     pop    bp
  140.     ret    
  141.     ?debug    C E60A48756E647265647468731B0A0A0007536563+
  142.     ?debug    C 6F6E64731B0A0800074D696E757465731B0A0600+
  143.     ?debug    C 05486F7572731B0A0400
  144.     ?debug    E
  145.     ?debug    E
  146. _UtyTime    endp
  147.     ?debug    L 47
  148. _UtyTimeString    proc    near
  149.     ?debug    B
  150.     push    bp
  151.     mov    bp,sp
  152.     sub    sp,8
  153.     ?debug    C E31C000200150204
  154.     ?debug    C E6065461726765741C0A0400
  155.     ?debug    B
  156.     ?debug    L 51
  157.     lea    ax,word ptr [bp-2]
  158.     push    ax
  159.     lea    ax,word ptr [bp-4]
  160.     push    ax
  161.     lea    ax,word ptr [bp-6]
  162.     push    ax
  163.     lea    ax,word ptr [bp-8]
  164.     push    ax
  165.     call    near ptr _UtyTime
  166.     add    sp,8
  167.     ?debug    L 52
  168.     push    word ptr [bp-2]
  169.     push    word ptr [bp-4]
  170.     push    word ptr [bp-6]
  171.     push    word ptr [bp-8]
  172.     mov    ax,offset DGROUP:s@
  173.     push    ax
  174.     push    word ptr [bp+4]
  175.     call    near ptr _sprintf
  176.     add    sp,12
  177. @5:
  178.     ?debug    L 53
  179.     mov    sp,bp
  180.     pop    bp
  181.     ret    
  182.     ?debug    C E60A48756E647265647468730402FEFF07536563+
  183.     ?debug    C 6F6E64730402FCFF074D696E757465730402FAFF+
  184.     ?debug    C 05486F7572730402F8FF065461726765741C0A04+
  185.     ?debug    C 00
  186.     ?debug    E
  187.     ?debug    E
  188. _UtyTimeString    endp
  189.     ?debug    L 55
  190. _UtyBlank    proc    near
  191.     ?debug    B
  192.     push    bp
  193.     mov    bp,sp
  194.     push    si
  195.     ?debug    C E6064C656E677468040A060006537472696E671C+
  196.     ?debug    C 0A0400
  197.     ?debug    B
  198.     ?debug    L 59
  199.     cmp    word ptr [bp+6],1
  200.     jge    @7
  201.     jmp    short @6
  202. @7:
  203.     ?debug    L 61
  204.     xor    si,si
  205.     jmp    short @11
  206. @10:
  207.     ?debug    L 62
  208.     mov    bx,word ptr [bp+4]
  209.     mov    byte ptr [bx+si],32
  210. @9:
  211.     inc    si
  212. @11:
  213.     mov    ax,word ptr [bp+6]
  214.     dec    ax
  215.     cmp    ax,si
  216.     jg    @10
  217. @8:
  218.     ?debug    L 63
  219.     mov    bx,word ptr [bp+4]
  220.     mov    byte ptr [bx+si],0
  221. @6:
  222.     ?debug    L 64
  223.     pop    si
  224.     pop    bp
  225.     ret    
  226.     ?debug    C E60169040406064C656E677468040A0600065374+
  227.     ?debug    C 72696E671C0A0400
  228.     ?debug    E
  229.     ?debug    E
  230. _UtyBlank    endp
  231. _TEXT    ends
  232. _BSS    segment word public 'BSS'
  233.     db    256 dup (?)
  234. _BSS    ends
  235. _TEXT    segment    byte public 'CODE'
  236.     ?debug    L 66
  237. _UtyRepeat    proc    near
  238.     ?debug    B
  239.     push    bp
  240.     mov    bp,sp
  241.     push    si
  242.     ?debug    C E6024368020A0600064E756D626572040A0400
  243.     ?debug    B
  244.     ?debug    L 69
  245.     xor    si,si
  246.     jmp    short @13
  247. @15:
  248.     ?debug    L 72
  249.     mov    al,byte ptr [bp+6]
  250.     mov    byte ptr DGROUP:b@[si],al
  251.     inc    si
  252. @13:
  253.     ?debug    L 71
  254.     mov    ax,word ptr [bp+4]
  255.     dec    word ptr [bp+4]
  256.     or    ax,ax
  257.     je    @16
  258.     cmp    si,255
  259.     jl    @15
  260. @16:
  261. @14:
  262.     ?debug    L 73
  263.     mov    byte ptr DGROUP:b@[si],0
  264.     ?debug    L 74
  265.     mov    ax,offset DGROUP:b@
  266.     jmp    short @12
  267. @12:
  268.     ?debug    L 75
  269.     pop    si
  270.     pop    bp
  271.     ret    
  272.     ?debug    C E31D0000011A02
  273.     ?debug    C E60169040406034275661D000003000002436802+
  274.     ?debug    C 0A0600064E756D626572040A0400
  275.     ?debug    E
  276.     ?debug    E
  277. _UtyRepeat    endp
  278. _TEXT    ends
  279.     ?debug    C E9
  280. _DATA    segment word public 'DATA'
  281. s@    label    byte
  282.     db    37
  283.     db    48
  284.     db    50
  285.     db    100
  286.     db    58
  287.     db    37
  288.     db    48
  289.     db    50
  290.     db    100
  291.     db    58
  292.     db    37
  293.     db    48
  294.     db    50
  295.     db    100
  296.     db    46
  297.     db    37
  298.     db    48
  299.     db    50
  300.     db    100
  301.     db    0
  302. _DATA    ends
  303. _TEXT    segment    byte public 'CODE'
  304.     extrn    _sprintf:near
  305. _TEXT    ends
  306.     public    _UtyClockCount
  307.     public    _UtyTimeString
  308.     public    _UtyRepeat
  309.     public    _UtyEnabled
  310.     public    _UtyBlank
  311.     public    _UtyTime
  312.     ?debug    C EA0109
  313.     ?debug    C E31E00000023040000
  314.     ?debug    C EC0E5F557479436C6F636B436F756E741E18
  315.     ?debug    C E31F00000023010000
  316.     ?debug    C EC0E5F55747954696D65537472696E671F18
  317.     ?debug    C E320000000231C0000
  318.     ?debug    C EC0A5F5574795265706561742018
  319.     ?debug    C E32100000023040000
  320.     ?debug    C EC0B5F557479456E61626C65642100
  321.     ?debug    C E32200000023010000
  322.     ?debug    C EC095F557479426C616E6B2218
  323.     ?debug    C E32300000023040001
  324.     ?debug    C EB085F737072696E746623
  325.     ?debug    C E32400000023010000
  326.     ?debug    C EC085F55747954696D652418
  327.     ?debug    C E60673697A655F740A060666706F735F740606
  328.     end
  329.